<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>
    <meta charset="utf-8" />
    <meta name="viewport"
        content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
    <meta name="robots" content="INDEX,FOLLOW" />
    <link rel="shortcut icon" href="https://m.luvdress.com/favicon.ico" />
    <link rel="apple-touch-icon" href="https://m.luvdress.com/apple-touch-icon.png" />

    <title>Bootstrap w/ Webpack</title>
</head>

<body>
    <header class="sticky-top bg-white container-fluid d-flex justify-content-between align-items-center pt-3">

        <!-- 左侧 -->
        <div class="d-flex align-items-center">
            <!-- 字体图标按钮（唤出分类列表） -->
            <button class="btn me-3" id="toggle-aside" aria-expanded="false" aria-controls="aside-menu">
                <i class="fa-solid fa-bars fa-lg"></i>
            </button>
            <!-- Logo -->
            <a href="#" class="navbar-brand">
                <img src="https://img.luvdress.com/media/upload/4/iv/4ivp13igdyqf3rm1727173088.png" alt="Logo"
                    class="logo img-fluid" />
            </a>
        </div>
        <!-- 右侧 -->
        <div class="d-flex align-items-center">
            <a href="#" class="btn me-2"><i class="fa-solid fa-user"></i></a>
            <a href="#" class="btn me-2"><i class="fa-solid fa-magnifying-glass"></i></a>
            <a href="#" class="btn position-relative">
                <i class="fa-solid fa-shopping-bag"></i>
                <span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger">3</span>

            </a>
        </div>

    </header>

    <!-- Aside 分类列表 -->
    <aside id="aside-menu" class="offcanvas offcanvas-start" tabindex="-1" aria-label="Categories">
        <div class="offcanvas-header">
            <h5 class="offcanvas-title">Categories</h5>
            <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button>
        </div>
        <div class="offcanvas-body">
            <ul class="list-group">
                <li class="list-group-item">
                    <a href="#" class="text-decoration-none">Category 1</a>
                </li>
                <li class="list-group-item">
                    <a href="#" class="text-decoration-none">Category 2</a>
                </li>
                <li class="list-group-item">
                    <a href="#" class="text-decoration-none">Category 3</a>
                </li>
            </ul>
        </div>
    </aside>
    <!-- 主体内容 -->
    <main>
        <!-- 商品图片轮播 -->
        <section class="container mt-2">
            <!-- Swiper 容器 -->
            <div class="swiper" id="productSwiper">
                <div class="swiper-wrapper">
                    <div class="swiper-slide">
                        <img src="https://img.luvdress.com/media/catalog/product/7/f2/7f229e015cf528442836511a1745c3c4.jpg.webp"
                            alt="商品 图片 1" class="img-fluid" loading="lazy" />
                    </div>
                    <div class="swiper-slide">
                        <img src="https://img.luvdress.com/media/catalog/product/8/77/8776cc16adfbcabeb6c0d9d44df31191.jpg.webp"
                            alt="商品 图片 2" class="img-fluid" loading="lazy" />
                    </div>
                    <div class="swiper-slide">
                        <img src="https://img.luvdress.com/media/catalog/product/e/26/e267f24386f2eefe4bae09f22548af42.jpg.webp"
                            alt="商品 图片 3" class="img-fluid" loading="lazy" />
                    </div>
                </div>
                <!-- 分页器 -->
                <div class="swiper-pagination"></div>
            </div>
        </section>
        <!-- 商品详情 -->
        <article class="container mt-2">
            <!-- 基本信息 -->
            <section class="border p-2 rounded">
                <p class="text-danger fw-bold fs-5" id="total-price">$99.00</p>
                <h1 class="fw-normal fs-6">
                    Mermaid Off-the-shoulder Sleeveless Sweep / Brush Train Evening Gown
                    With Ruffles
                </h1>
                <div class="d-flex justify-content-between align-items-center text-secondary fw-normal fs-6 lh-1">
                    <!-- 左侧信息 -->
                    <span class="fs-6 lh-1">Item Code: ABC123</span>
                    <!-- 右侧操作 -->
                    <div class="d-flex align-items-center gap-2">
                        <a href="https://m-test.luvdress.com/page/affiliate-program"
                            class="text-decoration-none text-secondary fs-6 lh-1">Affiliate Program</a>
                        <button class="btn btn-outline-secondary btn-sm fs-6 lh-1 flex-shrink-0"
                            aria-label="Share this product">
                            <i class="fa-solid fa-share align-self-center" style="font-size: 0.9em"></i>
                        </button>
                    </div>
                </div>
            </section>

            <!-- 颜色图片列表 -->
            <section class="sku-list-js mt-2 border p-2 rounded">
                <h4 class="mb-2">Color</h4>
                <span id="color-error" class="text-danger d-none">Please select a Color</span>
                <!-- 隐藏input 记录当前选中的尺码 -->
                <input class="sku-list-input-js" id="color-input" type="hidden" name="color" value="" data-is-custom="0"
                    data-attr-name="Color" data-selected-value-name="" data-selected-base-value-price="0"
                    data-selected-value-price="0">

                <ul class="list-unstyled d-flex flex-wrap gap-2 m-0" role="list" id="color-list" data-attr-code="color"
                    data-increase-price="1" data-show-size-chart="0" data-show-size-custom="0">
                    <!-- 黑色选项 -->
                    <li class="luv-sku-color-img-min-width">
                        <button class="option border-1 p-0" aria-pressed="false" aria-label="Select Black Color"
                            data-price-increase="5" data-base-price-increase="5" data-value-type="img"
                            data-value-code="black" data-value-name="Black">
                            <img src="https://img.luvdress.com/media/catalog/product/cache/150/0/4/ba/4ba620f1c68534663975bac4a1596aa1.jpg.webp"
                                alt="Black Dress" class="rounded img-fluid object-fit-cover" />
                        </button>
                    </li>
                    <!-- 米色选项 -->
                    <li class="luv-sku-color-img-min-width">
                        <button class="option border-1 p-0" aria-pressed="false" aria-label="Select Beige Color"
                            data-price-increase="6" data-base-price-increase="6" data-value-type="img"
                            data-value-code="beige" data-value-name="Beige">
                            <img src="https://img.luvdress.com/media/catalog/product/cache/150/0/7/5b/75b7865e119469863d5d6c94057b0c2c.jpg.webp"
                                alt="Beige Dress" class="rounded img-fluid object-fit-cover" />
                        </button>
                    </li>

                    <!-- 更多颜色 -->
                </ul>
            </section>

            <!-- 尺码选择 -->
            <section class="sku-list-js mt-2 border p-2 rounded">
                <h4 class="mb-2">Size</h4>
                <span id="size-error" class="text-danger d-none">Please select a Size</span>
                <!-- 隐藏input 记录当前选中的尺码 -->
                <input class="sku-list-input-js" id="size-input" type="hidden" name="size" value="" data-is-custom="0"
                    data-attr-name="Size" data-selected-value-name="" data-selected-base-value-price="0"
                    data-selected-value-price="0">

                <ul class="list-unstyled d-flex flex-wrap gap-2 m-0" role="list" id="size-list" data-attr-code="size"
                    data-increase-price="1" data-show-size-chart="1" data-show-size-custom="1">
                    <li>
                        <button class="option border-1 bg-transparent px-1 py-1 rounded" aria-pressed="false"
                            aria-label="Select Size US 2" data-price-increase="0" data-base-price-increase="0"
                            data-value-type="txt" data-value-code="us2" data-value-name="US 2">
                            US 2
                        </button>
                    </li>
                    <li>
                        <button class="option border-1 bg-transparent px-1 py-1 rounded" aria-pressed="false"
                            aria-label="Select Size US 4" data-price-increase="10" data-base-price-increase="10"
                            data-value-type="txt" data-value-code="us4" data-value-name="US 4">
                            US 4
                        </button>
                    </li>
                    <li>
                        <button class="option border-1 bg-transparent px-1 py-1 rounded" aria-pressed="false"
                            aria-label="Select Size US 6" data-price-increase="20" data-base-price-increase="20"
                            data-value-type="txt" data-value-code="us6" data-value-name="US 6">
                            US 6
                        </button>
                    </li>
                </ul>

                <!-- 局部尺码表展示 -->
                <div id="size-local-chart" class="mt-2 d-none">
                    <table class="table table-bordered">
                        <tbody id="size-local-chart-body">
                            <!-- 动态填充尺码详情 -->
                        </tbody>
                    </table>
                </div>

                <!-- 定制表单选项 -->
                <div class="mt-2">
                    <label>
                        <input type="checkbox" class="sku-custom-js" data-related-attr-code="size"
                            data-related-attr-name="Size" data-base-custom-price="30" data-custom-price="30" />
                        Enable Custom Size Form
                    </label>
                </div>
                <div class="mt-2 d-none" id="size-custom-form-container">
                    <p>
                        Please provide detailed <b>body measurements</b> to enjoy our
                        customized service. Note: Please provide height and weight data
                        additionally, and our tailors can make your clothes fit better.
                    </p>
                    <p class="text-muted">
                        Fields marked with <span class="text-danger">*</span> are required.
                    </p>

                    <!-- 单位选择 -->
                    <div class="unit-selector-js mb-2">
                        <label for="size-unit-system" class="form-label">Measurement System:</label>
                        <select id="size-unit-system" class="form-select" data-related-attr-code="size">
                            <option value="imperial">Imperial (ft/in, lb)</option>
                            <option value="metric">Metric (cm, kg)</option>
                        </select>
                    </div>

                    <!-- 身高输入 -->
                    <div class="input-group mb-2" id="imperial-height" data-measurements-code="height"
                        data-measurements-name="Height">
                        <span class="input-group-text"><span class="text-danger">*</span>Height</span>
                        <input type="number" id="feet" placeholder="Feet" required class="form-control flex-grow-1" />
                        <span class="input-group-text">'</span>
                        <input type="number" id="inches" placeholder="Inches" step="0.5"
                            class="form-control  flex-grow-1" />
                        <span class="input-group-text">"</span>
                    </div>
                    <div class="input-group mb-2 d-none" id="metric-height">
                        <span class="input-group-text"><span class="text-danger">*</span>Height</span>
                        <input type="number" name="height" id="cm" placeholder="Centimeters" step="1" required
                            class="form-control" />
                        <span class="input-group-text">cm</span>
                    </div>

                    <!-- 体重输入 -->
                    <div class="input-group mb-2">
                        <span class="input-group-text"><span class="text-danger">*</span>Weight</span>
                        <input type="number" name="weight" data-measurements-name="Weight" id="weight" step="0.1"
                            required class="form-control" />
                        <span id="weight-unit-label" class="input-group-text">lb</span>
                    </div>

                    <!-- 其他测量点 -->
                    <div class="input-group mb-2">
                        <span class="input-group-text"><span class="text-danger">*</span>Waist</span>
                        <input type="number" name="waist" data-measurements-name="Waist" step="0.1" required
                            class="form-control custom-input-js" />
                        <span class="input-group-text input-group-unit-js">in</span>
                        <button type="button" class="btn btn-outline-secondary measurement-trigger"
                            data-measurement="waist">ⓘ</button>
                    </div>
                    <div class="input-group mb-2">
                        <span class="input-group-text"><span class="text-danger">*</span>Hips</span>
                        <input type="number" name="hips" data-measurements-name="Hips" step="0.1" required
                            class="form-control custom-input-js" />
                        <span class="input-group-text input-group-unit-js">in</span>
                        <button type="button" class="btn btn-outline-secondary measurement-trigger"
                            data-measurement="hips">ⓘ</button>
                    </div>


                    <!-- 测量示意图 -->
                    <div class="text-center mt-2">
                        <img loading="lazy"
                            src="https://img.luvdress.com/custom/wedding-dresses-custom-measurements.png.webp"
                            alt="Measurement Illustration" class="img-fluid rounded" />
                    </div>
                </div>
            </section>

            <!-- Quantity Selector -->
            <section class="mt-2 border p-2 rounded">
                <div class="d-flex align-items-center justify-content-between">
                    <label for="quantity" class="mb-0 fw-medium">QTY:</label>
                    <div class="input-group" style="width: 150px;">
                        <button class="btn qty-minus" type="button">
                            <i class="fas fa-minus"></i>
                        </button>
                        <input type="number" id="quantity" name="quantity" class="form-control text-center" value="1"
                            min="1" aria-label="Quantity">
                        <button class="btn  qty-plus" type="button">
                            <i class="fas fa-plus"></i>
                        </button>
                    </div>
                </div>
            </section>


            <section class="accordion mt-2">
                <div class="accordion-item">
                    <h2 class="accordion-header">
                        <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse"
                            data-bs-target="#panelsStayOpen-collapseThree" aria-expanded="false"
                            aria-controls="panelsStayOpen-collapseThree">
                            Description
                        </button>
                    </h2>
                    <div id="panelsStayOpen-collapseThree" class="accordion-collapse collapse">
                        <div class="accordion-body">
                            <dl class="product-attributes row g-2 mt-3">
                                <div class="col-6 col-md-4 col-lg-3">
                                    <dt class="text-muted">Embellishment:</dt>
                                    <dd>Ruffles</dd>
                                </div>
                                <div class="col-6 col-md-4 col-lg-3">
                                    <dt class="text-muted">Neckline:</dt>
                                    <dd>Off-the-shoulder</dd>
                                </div>
                                <div class="col-6 col-md-4 col-lg-3">
                                    <dt class="text-muted">Silhouette:</dt>
                                    <dd>Mermaid</dd>
                                </div>
                                <div class="col-6 col-md-4 col-lg-3">
                                    <dt class="text-muted">Train:</dt>
                                    <dd>Sweep / Brush Train</dd>
                                </div>
                                <div class="col-6 col-md-4 col-lg-3">
                                    <dt class="text-muted">Sleeve Length:</dt>
                                    <dd>Sleeveless</dd>
                                </div>
                                <div class="col-6 col-md-4 col-lg-3">
                                    <dt class="text-muted">Waist Line:</dt>
                                    <dd>Dropped</dd>
                                </div>
                                <div class="col-6 col-md-4 col-lg-3">
                                    <dt class="text-muted">Back Details:</dt>
                                    <dd>Zipper</dd>
                                </div>
                                <div class="col-6 col-md-4 col-lg-3">
                                    <dt class="text-muted">Style:</dt>
                                    <dd>Glamorous</dd>
                                </div>
                                <div class="col-6 col-md-4 col-lg-3">
                                    <dt class="text-muted">Body Shape:</dt>
                                    <dd>Misses</dd>
                                </div>
                                <div class="col-6 col-md-4 col-lg-3">
                                    <dt class="text-muted">Venues:</dt>
                                    <dd>Hall</dd>
                                </div>
                                <div class="col-6 col-md-4 col-lg-3">
                                    <dt class="text-muted">Season:</dt>
                                    <dd>Spring</dd>
                                </div>
                                <div class="col-6 col-md-4 col-lg-3">
                                    <dt class="text-muted">Catalogue:</dt>
                                    <dd>Evening Dress, Wedding Guest Dress</dd>
                                </div>
                            </dl>
                        </div>
                    </div>
                </div>
                <div class="accordion-item">
                    <h2 class="accordion-header">
                        <button class="accordion-button" type="button" data-bs-toggle="collapse"
                            data-bs-target="#panelsStayOpen-collapseOne" aria-expanded="true"
                            aria-controls="panelsStayOpen-collapseOne">
                            Shipping & Purchase Policy
                        </button>
                    </h2>
                    <div id="panelsStayOpen-collapseOne" class="accordion-collapse collapse show">
                        <div class="accordion-body">
                            <p>
                                1) This is a custom order, and whether you choose standard sizing or custom
                                measurements, our tailors will carefully craft this order for you.
                            </p>
                            <p>
                                2) This item is eligible for return if found to be defective upon arrival.
                                Please review our full
                                <a href="https://m-test.luvdress.com/page/privacy-policy" target="_blank"
                                    rel="nofollow">
                                    <strong>Return Policy</strong>
                                </a> for details.
                            </p>
                            <div class="d-flex align-items-center mb-2">
                                <i class="far fa-clock text-secondary me-2"></i>
                                <span>Processing Time: </span>
                                <span class="ms-1">10-15 Days</span>
                            </div>

                            <div class="d-flex align-items-center mb-2">
                                <i class="fas fa-shipping-fast text-secondary me-2"></i>
                                <span>Shipping Time: </span>
                                <span class="ms-1">6-8 Days</span>
                            </div>

                            <div class="d-flex mt-2">
                                <div class="text-muted">
                                    Order now and receive it around <strong>May 11th</strong>
                                </div>
                            </div>

                        </div>
                    </div>
                </div>
                <div class="accordion-item">
                    <h2 class="accordion-header">
                        <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse"
                            data-bs-target="#panelsStayOpen-collapseTwo" aria-expanded="false"
                            aria-controls="panelsStayOpen-collapseTwo">
                            Basic Guarantee
                        </button>
                    </h2>
                    <div id="panelsStayOpen-collapseTwo" class="accordion-collapse collapse">
                        <div class="accordion-body">

                            <div class="d-flex align-items-center mb-2">
                                <i class="fas fa-check-circle text-success me-2"></i>
                                <strong>Shipping Methods</strong>
                            </div>
                            <p>Expedited Shipping (DHL/UPS/FedEx):&nbsp;6-8&nbsp;Days</p>
                            <p>Standard Shipping (ePacket/DPD):&nbsp;10-25&nbsp;Days</p>
                            <div class="d-flex align-items-center mb-2">
                                <i class="fas fa-check-circle text-success me-2"></i>
                                <strong>Total Delivery Time</strong>
                            </div>
                            <p>Before your order is shipped, we have to process your order and put all your items
                                through its strict quality control tests. Because of this, Total Delivery Time is
                                different from shipping time alone.</p>
                            <p><strong>Total Delivery Time = Processing Time + Shipping Time</strong></p>
                            <div class="d-flex align-items-center mb-2">
                                <i class="fas fa-check-circle text-success me-2"></i>
                                <strong>Payment Security</strong>
                            </div>

                            <p>We know how important payment security is to you, and we have taken several steps to help
                                keeping your payment account information secure.</p>
                            <p>To help ensure a safe marketplace, as a buyer you can only use our approved payment
                                methods.</p>

                        </div>
                    </div>
                </div>

            </section>

        </article>
    </main>

    <!-- 浏览历史部分 -->
    <section class="bg-light py-3">
        <div class="container">
            <h5 class="mb-2">最近浏览</h5>
            <div class="scrollable-history overflow-auto">
                <ul class="list-inline mb-0 d-flex" id="history-list">
                    <!-- 动态加载浏览历史项 -->
                    <li class="list-inline-item bg-white border rounded p-2 luv-browse-history-min-width">
                        <img src="https://img.luvdress.com/media/catalog/product/cache/300/0/3/dd/3dd9e563ae83c7bf54d0297b7fa17a41.jpg.webp"
                            alt="Product Image" class="img-fluid">
                        <div class="mt-2">
                            <h6 class="mb-1">ABC123</h6>
                            <p class="mb-0">$100.00</p>
                        </div>
                    </li>
                    <li class="list-inline-item bg-white border rounded p-2 luv-browse-history-min-width">
                        <img src="https://img.luvdress.com/media/catalog/product/cache/300/0/3/dd/3dd9e563ae83c7bf54d0297b7fa17a41.jpg.webp"
                            alt="Product Image" class="img-fluid">
                        <div class="mt-2">
                            <h6 class="mb-1">ABC123</h6>
                            <p class="mb-0">$100.00</p>
                        </div>
                    </li>
                    <li class="list-inline-item bg-white border rounded p-2 luv-browse-history-min-width">
                        <img src="https://img.luvdress.com/media/catalog/product/cache/300/0/3/dd/3dd9e563ae83c7bf54d0297b7fa17a41.jpg.webp"
                            alt="Product Image" class="img-fluid">
                        <div class="mt-2">
                            <h6 class="mb-1">ABC123</h6>
                            <p class="mb-0">$100.00</p>
                        </div>
                    </li>
                    <li class="list-inline-item bg-white border rounded p-2 luv-browse-history-min-width">
                        <img src="https://img.luvdress.com/media/catalog/product/cache/300/0/3/dd/3dd9e563ae83c7bf54d0297b7fa17a41.jpg.webp"
                            alt="Product Image" class="img-fluid">
                        <div class="mt-2">
                            <h6 class="mb-1">ABC123</h6>
                            <p class="mb-0">$100.00</p>
                        </div>
                    </li>
                    <li class="list-inline-item bg-white border rounded p-2 luv-browse-history-min-width">
                        <img src="https://img.luvdress.com/media/catalog/product/cache/300/0/3/dd/3dd9e563ae83c7bf54d0297b7fa17a41.jpg.webp"
                            alt="Product Image" class="img-fluid">
                        <div class="mt-2">
                            <h6 class="mb-1">ABC123</h6>
                            <p class="mb-0">$100.00</p>
                        </div>
                    </li>
                </ul>
            </div>
        </div>
    </section>

    <!-- 固定底部 -->
    <footer class="footer fixed-bottom bg-light d-flex justify-content-between align-items-center p-2 border-top">
        <div class="d-flex align-items-center">
            <!-- 喜欢图标 -->
            <button class="btn btn-link text-dark" aria-label="Like">
                <i class="fas fa-heart"></i>
            </button>

            <!-- 购物袋图标与数量 -->
            <button class="btn btn-link text-dark position-relative" aria-label="Cart">
                <i class="fas fa-shopping-bag"></i>
                <span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger">
                    3
                </span>
            </button>
        </div>

        <div class="d-flex align-items-center">
            <!-- Add to Bag 按钮 -->
            <button type="button" class="btn btn-primary me-2" id="add-to-cart">Add to bag</button>

            <!-- Buy Now 按钮 -->
            <button type="button" class="btn btn-success">Buy now</button>
        </div>
    </footer>
    <div style="height: 70px;"></div>
    <!-- Modal measurement, Dynamic Content -->
    <div class="modal fade" id="measurementModal" tabindex="-1" aria-labelledby="measurementModalLabel"
        aria-hidden="true">
        <div class="modal-dialog modal-dialog-centered modal-dialog-scrollable">
            <div class="modal-content" role="document">
                <!-- Modal 头部 -->
                <div class="modal-header">
                    <h1 class="modal-title" id="measurementModalLabel">Waist</h1>
                    <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                </div>
                <!-- Modal 主体 -->
                <div class="modal-body">
                    <img src="" alt="Measurement Image" class="img-fluid rounded mb-2" id="modalImage">
                    <div id="modalDescription"></div>
                </div>
                <!-- Modal 底部 -->
                <!-- <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
                </div> -->
            </div>
        </div>
    </div>

    <!-- Modal message -->
    <div class="modal fade" id="messageModal" tabindex="-1" aria-labelledby="messageModalLabel" aria-hidden="true">
        <div class="modal-dialog modal-dialog-centered modal-dialog-scrollable">
            <div class="modal-content" role="document">
                <!-- Modal 头部 -->
                <div class="modal-header">
                    <h1 class="modal-title" id="messageModalLabel">Waist</h1>
                    <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                </div>
                <!-- Modal 主体 -->
                <div class="modal-body">
                    <img src="" alt="Measurement Image" class="img-fluid rounded mb-2" id="modalImage">
                    <div id="modalDescription"></div>
                </div>

            </div>
        </div>
    </div>

</body>

</html>